package com.basic.business.service.impl;

import com.basic.business.model.entity.SysRoleMenuRel;
import com.basic.business.model.dto.SysRoleMenuRelDto;
import com.basic.business.model.vo.SysRoleMenuRelVo;
import com.basic.business.mapper.SysRoleMenuRelMapper;
import com.basic.business.service.SysRoleMenuRelService;
import org.springframework.stereotype.Service;
import com.github.pagehelper.*;

import java.util.*;

import org.springframework.beans.BeanUtils;

import javax.annotation.Resource;

/**
 * 角色菜单关系表(SysRoleMenuRel)表服务实现类
 *
 * @author huage
 * @since 2021-07-20 14:33:48
 */
@Service("sysRoleMenuRelService")
public class SysRoleMenuRelServiceImpl implements SysRoleMenuRelService {

    @Resource
    private SysRoleMenuRelMapper sysRoleMenuRelMapper;

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    @Override
    public SysRoleMenuRelVo findById(Integer id) {
        SysRoleMenuRel sysRoleMenuRel = this.sysRoleMenuRelMapper.selectById(id);

        //将SysRoleMenuRel转成SysRoleMenuRelVo
        SysRoleMenuRelVo sysRoleMenuRelVo = null;
        if (sysRoleMenuRel != null) {
            sysRoleMenuRelVo = new SysRoleMenuRelVo();
            BeanUtils.copyProperties(sysRoleMenuRel, sysRoleMenuRelVo);
        }

        return sysRoleMenuRelVo;
    }

    /**
     * 查询多条数据
     *
     * @param sysRoleMenuRelDto 实例对象
     * @param pageNum           页数
     * @param pageSize          每页条数
     * @return 对象列表
     */
    @Override
    public PageInfo<SysRoleMenuRelVo> findPageList(SysRoleMenuRelDto sysRoleMenuRelDto, int pageNum, int pageSize) {
        PageHelper.startPage(pageNum, pageSize);

        //将SysRoleMenuRel转成SysRoleMenuRelVo
        SysRoleMenuRel sysRoleMenuRel = new SysRoleMenuRel();
        BeanUtils.copyProperties(sysRoleMenuRelDto, sysRoleMenuRel);
        List<SysRoleMenuRel> sysRoleMenuRelList = this.sysRoleMenuRelMapper.selectList(sysRoleMenuRel);

        PageInfo<SysRoleMenuRelVo> pageInfo = new PageInfo<>();
        BeanUtils.copyProperties(new PageInfo<>(sysRoleMenuRelList), pageInfo);
        return pageInfo;
    }

    /**
     * 新增数据
     *
     * @param sysRoleMenuRelDto 实例对象
     * @return 实例对象
     */
    @Override
    public SysRoleMenuRelVo add(SysRoleMenuRelDto sysRoleMenuRelDto) {
        //将SysRoleMenuRelDto转成SysRoleMenuRel
        SysRoleMenuRel sysRoleMenuRel = new SysRoleMenuRel();
        BeanUtils.copyProperties(sysRoleMenuRelDto, sysRoleMenuRel);
        this.sysRoleMenuRelMapper.insert(sysRoleMenuRel);

        return this.findById(sysRoleMenuRel.getId());
    }

    /**
     * 修改数据
     *
     * @param sysRoleMenuRelDto 实例对象
     * @return 实例对象
     */
    @Override
    public SysRoleMenuRelVo modify(SysRoleMenuRelDto sysRoleMenuRelDto) {
        //将SysRoleMenuRelDto转成SysRoleMenuRel
        SysRoleMenuRel sysRoleMenuRel = new SysRoleMenuRel();
        BeanUtils.copyProperties(sysRoleMenuRelDto, sysRoleMenuRel);
        this.sysRoleMenuRelMapper.update(sysRoleMenuRel);

        return this.findById(sysRoleMenuRel.getId());
    }

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    @Override
    public boolean remove(Integer id) {
        return this.sysRoleMenuRelMapper.deleteById(id) > 0;
    }
}

